<?php
/**
 *
 * 虚拟空间 数据库和空间容量监控脚本
 * By:Ahi
 */
error_reporting(0);
include 'mail.php';
$Host = '';  //数据库地址
$User = ''; //用户名
$Pass = ''; //密码
$DbName = ''; //数据库名
$Email = '';

//统计数据库使用大小
$conn = mysql_connect($Host, $User, $DbName) or die("error connecting");
mysql_query("set names 'utf8'");
mysql_select_db('information_schema');
$sql = "select concat(round(sum(data_length/1024/1024),2),'MB') as data from tables where table_schema= $DbName "; //SQL语句
$result = mysql_query($sql, $conn);
while ($row = mysql_fetch_array($result)) {
    echo '数据库使用了:' . $dbuse = $row['data'] . '<br>';
}

echo '空间使用了:' . $zoneuse = getRealSize(getDirSize('../../htdocs'));
//发送告警邮件
if ($zoneuse > '800M') {
    sendmail($Email, '空间容量告警!!', "已使用空间 $zoneuse,请主人注意删除无用的数据");
}
if ($dbuse > '39M') {
    sendmail($Email, '数据库容量告警!!', "已使用空间 $baseus},请主人注意删除无用的数据");
}

// 获取文件夹大小
function getDirSize($dir)
{
    $handle = opendir($dir);
    while (false !== ($FolderOrFile = readdir($handle))) {
        if ($FolderOrFile != "." && $FolderOrFile != "..") {
            if (is_dir("$dir/$FolderOrFile")) {
                $sizeResult += getDirSize("$dir/$FolderOrFile");
            } else {
                $sizeResult += filesize("$dir/$FolderOrFile");
            }
        }
    }
    closedir($handle);
    return $sizeResult;
}

// 单位自动转换函数
function getRealSize($size)
{
    $kb = 1024;         // Kilobyte
    $mb = 1024 * $kb;   // Megabyte
    $gb = 1024 * $mb;   // Gigabyte
    $tb = 1024 * $gb;   // Terabyte

    if ($size < $kb) {
        return $size . " B";
    } else if ($size < $mb) {
        return round($size / $kb, 2) . " KB";
    } else if ($size < $gb) {
        return round($size / $mb, 2) . " MB";
    } else if ($size < $tb) {
        return round($size / $gb, 2) . " GB";
    } else {
        return round($size / $tb, 2) . " TB";
    }
}


?>